package com.ranyk.www.enums;

import lombok.Getter;

import java.util.Objects;

/**
 * CLASS_NAME: HeaderEnum.java <br/>
 *
 * @author ranyk           <br/>
 * @version V1.0           <br/>
 * @decription: Header 枚举  <br/>
 * @date: 2022-04-14 <br/>
 */
@Getter
@SuppressWarnings("unused")
public enum HeaderEnum {

    /**
     * Authorization Header 定义
     */
    AUTHENTICATION_HEADER("Authorization", "Authorization Header");

    /**
     * Header 值
     */
    private final String value;
    /**
     * Header 信息
     */
    private final String msg;

    /**
     * 全参构造函数
     *
     * @param value Header 值
     * @param msg   Header 信息
     */
    HeaderEnum(String value, String msg) {
        this.value = value;
        this.msg = msg;
    }

    /**
     * 根据 header 值获取 header 枚举对象
     *
     * @param value header 值
     * @return 反正状态枚举对象, 默认 HeaderEnum.AUTHENTICATION_HEADER
     */
    public static HeaderEnum stateOf(String value) {
        for (HeaderEnum statusEnum : values()) {
            if (Objects.equals(statusEnum.getValue(), value)) {
                return statusEnum;
            }
        }
        return AUTHENTICATION_HEADER;
    }
}
